﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using Fiuba.Algo3.Titiritero.Vista;
using Fiuba.Algo3.Titiritero;
using LibreriaDeClases;
namespace BattleCity
{
    public class TanqueIFV : TanquePC
    {
        //Atributos
        private Point ubicacionEnemigo;      
        private IDireccion direccion;
        
        //Constructor
        public TanqueIFV()
        {
            this.energia = 85;
            this.Velocidad = 6;
            this.arma = new Canion();
            this.nombre = "TanqueIFV";
            this.direccion = new Abajo();
            TanqueDestruido += new DelegadoTanque(nada);
        }
        public TanqueIFV(Point ubicacion)
        {
            this.Figura = new Rectangulo(ubicacion, 30, 30);
            this.energia = 85;
            this.Velocidad = 6;
            this.arma = new Ametralladora();
	        this.nombre = "TanqueIFV";
            this.direccion = new Abajo();
            TanqueDestruido += new DelegadoTanque(nada);

        }

        //Metodos
        override public int getPuntos()
        {
            return 30;
        }
        protected Point getUbicacionEnemigo()
        {

            ubicacionEnemigo = Base.getBase().Figura.getUbicacion();

            return ubicacionEnemigo;
        }

        override protected IDireccion DireccionAvanzar()
        {



            if ((this.Figura.getUbicacion().X) > (this.getUbicacionEnemigo().X))
            {

                direccion = new Derecha();

                if (this.Figura.getUbicacion().Y <= (this.getUbicacionEnemigo().Y))
                {
                    direccion = new Abajo();
                }
                    else direccion = new Izquierda();
                    
                }

            if ((this.Figura.getUbicacion().X) < (this.getUbicacionEnemigo().X))
            {

                direccion = new Izquierda();

                if (this.Figura.getUbicacion().Y <= (this.getUbicacionEnemigo().Y))
                {
                    direccion = new Abajo();
                }
                else direccion = new Derecha();

            }

            return direccion;

        }
    


        override protected IDireccion DireccionRetroceder()
        {
            IDireccion Daux = null;


            if (direccion.EsAbajo())
            {
                return new Arriba();

            }
            else if (direccion.EsArriba())
            {
                return new Abajo();

            }
            else if (direccion.EsIzquierda())
            {
                return new Derecha();

            }
            else if (direccion.EsDerecha())
            {
                return new Izquierda();

            }
            return Daux;


        }
    }
}
